package com.hsylient.javase.chapter06.demo03;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

/**
 * 比如我们在定义一个方法的时候，这个方法可能会发生异常，所以我们会做一个异常的处理
 */
public class MyThrow {

    public static void main(String[] args) throws FileNotFoundException {
        loadProperties();
    }

    /**
     * 这个是一个编译时异常，需要在方法声明的位置商行需要使用关键字throws抛出
     * 同时在调用该方法的时候需要手动处理好
     */
    public static void loadProperties() throws FileNotFoundException {
        FileInputStream inputStream = new FileInputStream("xxx");
        try {
            inputStream.close();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

    }

    /**
     * 因为我就知道a / b的时候可能会发生异常，因为用户可能会将分母为：0，传递过来
     * 所以我需要提前做一下处理，一旦发生了不会让程序停下来
     *
     * 这里写的有问题，问题出在这个ArithmeticException是一个运行时异常，因为他继承了RuntimeException
     * 程序员不需要处理，所以在调用这个方法的时候idea都没有提示我需要处理
     */
    public static int division(int a, int b) throws ArithmeticException {
        if (b == 0) {
            throw new ArithmeticException("分母不能为0");
        }
        return a / b;
    }
}
